\chapter{簡単な使い方}
まず最初に最も基本的な対話モードでの動作を説明しましょう。
この使い方では、PPPプログラムはttyをひとつ占有します。
利用にあたっては、仮想コンソールあるいは複数のウインドウあるいは
画面を使用できる環境を用意してください。
仮想コンソールやwindowコマンドを使えば良いわけですが、
X Windowが使えるのがベストです。

\section{手動でのダイアリング}
PPPには端末機能を提供する{\em term}コマンドが用意されています。
このコマンドを使ってモデムを操作してダイアリングをおこなうこと
ができます。

\begin{enumerate}
\item PPPを起動すると、プロンプトが表示されてユーザからのコマンドを
  受け付ける状態になります。
  \begin{screen}\baselineskip12pt
    \begin{example}
% ppp
User Process PPP. Written by Toshiharu OHNO.
Log level is 09
Using interface: tun0
Interactive mode
ppp> 
    \end{example}
\end{screen}
\item {\tt show modem}コマンドを実行し、モデムの設定を
  確認してください。設定を変更する必要がある場合には、
  {\tt set}コマンドを使って変更をすることができます。

  \begin{screen}\baselineskip12pt
    \begin{verbatim}
ppp> show modem
device: /dev/tty00  speed: 38400
cs8, none parity
connect count: 0
outq: 63
DialScript  = ABORT BUSY ABORT NO\sCARRIER TIMEOUT 5 "" AT OK-AT-OK \pATDT\T
TIMEOUT 20 CONNECT
LoginScript = 
PhoneNumber = 
ppp>
ppp> set speed 19200
ppp> set device /dev/tty02
    \end{verbatim}
  \end{screen}
\item {\tt term}コマンドを実行することにより、PPPプログラムは端末モードに
  入ります。この状態ではキーボードから直接モデムを操作することができます。
  モデムのATコマンドを使って接続先を呼び出してください。

  \begin{screen}\baselineskip12pt
    \begin{verbatim}
ppp> term
at
OK
atdt0331234567
    \end{verbatim}
  \end{screen}
\item 相手に接続できたら、接続先の方法にしたがって相手側のPPPを
  起動してください。相手側でPPPが動作し始めると、それを検出し
  自動的にPPPのパケットを処理するモードに移行するとともに
  termコマンド処理を終了し、コマンドプロンプトが表示されます。

  次の例は、IIJのダイアルアップサービスにログインした場合を
  示しており、ログインと同時に相手側でPPPがスタートしています。

  \begin{screen}\baselineskip12pt
    \begin{example}
CARRIER 14400

PROTOCOL: LAP-M

COMPRESSION: V.42BIS

CONNECT 38400/ARQ

login: USERNAME
Password: 
PPP session from (192.244.177.2) to 192.244.177.13 beginning....
ppp> Packet mode.
    \end{example}
  \end{screen}
\item 相手とのネゴシエーションがうまく進めば、数秒で\verb|PPP>|という
  プロンプトが表示されるハズです。(プロンプトが小文字の\verb|ppp>|から
  大文字の\verb|PPP|に変化します。)
  \begin{screen}\baselineskip12pt
    \begin{example}
ppp> Packet mode.

PPP>
    \end{example}
  \end{screen}
\item ここまでくれば、ネットワーク層の接続が確立されています。
  {\tt show ipcp}コマンドを実行して、割り当てられたIPアドレスを
  確認してください。ディフォルトの設定を使用した場合には、接続先から
  指定されたアドレスを使うようになります。
  \begin{screen}\baselineskip12pt
    \begin{verbatim}
PPP> show ipcp
IPCP [Opend]
 his side: 192.244.177.2, 2d0f00
 my  side: 192.244.177.13, 2d0f00
connected: 2 secs, idle: 2 secs

Defaults:  My Address: 0.0.0.0/0  His Address: 0.0.0.0/0
PPP>
    \end{verbatim}
  \end{screen}
\item ping, telnet等のコマンドを使って、接続先との通信が可能な
  ことを確認してください。
  \begin{screen}\baselineskip12pt
    \begin{verbatim}
% ping 192.244.177.2
    \end{verbatim}
  \end{screen}
\item 通信が終了したら、closeコマンドを発行します。PPPは
  LCPで終了処理をした後にモデムを切ります。モデムの接続が切れた
  ことを確認してquitコマンドを実行するとプログラムを終了します。
  \begin{screen}\baselineskip12pt
    \begin{verbatim}
PPP> close
ppp>
ppp> quit
%
    \end{verbatim}
  \end{screen}
\end{enumerate}

\section{自動ダイアリング}
先の例では、手動でダイアル操作をおこないましたが、ダイアリングと
ログインの手順を登録すれば、自動的に相手側の計算機との接続を
おこなうことができます。

\begin{enumerate}
\item show modemコマンドを実行し、\verb|DialScript|と\verb|LoginScript|
  の設定を確認して下さい。
\item これらの設定は{\tt set}コマンドを使って変更することができます。
  \verb|DialScript|のなかの\verb|\T|は、\verb|PhoneNumer|で指定される
  電話番号をあらわします。詳しくは付録\ref{chat-script}を参照してください。
  また、{\tt set}コマンドを使用する場合には、
  次の例のように、引用符で囲むのを忘れないでください。

  \begin{screen}\baselineskip12pt
    \begin{verbatim}
ppp> set dial "ABORT BUSY ABORT NO\\sDIALTONE ABORT NO\\sCARRIER TIMEOUT 5
\"\" AT OK-AT-OK ATDT\\T TIMEOUT 30 CONNECT"
ppp> set phone 01234566789
ppp> set login "TIMEOUT 5 gin:\\r-gin: Panon word: Panon
ppp>
    \end{verbatim}
  \end{screen}

\item {\tt dial}コマンドを実行することにより、指定された手順にしたがって
  ダイアリングとログインの処理を行います。ダイアルおよびログインの手順が
  終了した時点でプロンプトに戻ります。そして、IPCPの接続に成功すると
  プロンプトが小文字の\verb|ppp>|から大文字の\verb|PPP>|に変化します。
  \begin{screen}\baselineskip12pt
    \begin{verbatim}
ppp> dial
dial OK!
login OK!
ppp> Packet mode.
ppp>
PPP>
    \end{verbatim}
  \end{screen}
\item 接続の終了処理は、手動で{\tt close}及び{\tt quite}コマンドを
  用いておこないます。{\tt close}により接続が切断された時点でプロンプトは
  小文字の\verb|ppp>|に変化します。
  \begin{screen}\baselineskip12pt
    \begin{verbatim}
PPP> close
ppp>
ppp> quit
%
    \end{verbatim}
  \end{screen}
\end{enumerate}

\section{IPアドレスの指定について}
上記の例では、IPアドレスの指定は何もおこなっていませんでした。
じつは、相手側にアドレスの指定をすべて委ねていたのです。
相手側がこちら側で使用すべきアドレスの指定をおこなう機能を有して
いない場合や、特定のアドレスを使用したい場合には、以下のようにして
使用するアドレスを指定することができます。

\begin{screen}\baselineskip12pt
  \begin{example}
ppp> set ifaddr {\em srcaddr dstaddr}
ppp> dial
  \end{example}
\end{screen}

ここで、{\em srcaddr}はこちら側のインターフェイスで使用する
IPアドレスで、{\em dstaddr}は接続先で使用するIPアドレスです。
アドレスとして\verb|0.0.0.0| (0と記述可)を指定した場合には
相手の指示に従うことを表します。

{\em set ifaddr}コマンドで設定するのは、あくまでのこちら側で
希望するアドレスの指定にすぎないことに注意してください。
実際には、相手側で利用を希望するアドレスをもっている場合も
ありますので、相手側との調整がつかない場合には{\em set ifaddr}
コマンドで指定したアドレスを使って接続ができるとは限りません。

接続先との間で使用するアドレスを調整するためには、\ref{ip-address}節で
説明するようにアドレスの範囲の指定を利用することができます。

\section{フラグの指定}
接続先のサポートしている機能に応じて動作を変更するために、
動作フラグの変更ができるようになっています。現在の設定は
{\tt display}コマンドによって表示することができ、動作の変更は
{\tt enable}, {\tt disable}, {\tt deny}, {\tt accept}の4つの
コマンドでおこないます。

\begin{description}
\item[enable] こちら側から相手側に対するオプションの利用の
  提案を許可します。
\item[disable] こちら側から相手側に対するオプションの利用の提案を
  禁止します。
\item[accept] 相手側からのオプションの利用の提案を受け付けます。
\item[deny] 相手側からのオプションの利用の提案を拒否します。
\end{description}

このように、通信の方向毎にフラグの指定ができますので、たとえば
``送信方向にはVJ圧縮を利用するが、受信方向では利用しない''といった
使い方も可能です。

\begin{screen}\baselineskip13pt
  \begin{verbatim}
ppp> display
Current configuration option settings..

Name            My Side         His Side
----------------------------------------
vjcomp          enable          accept
lqr             disable         deny
chap            disable         accept
pap             disable         accept
acfcomp         enable          accept
protocomp       enable          accept
pred1           enable          accept
ppp>
ppp> deny vjcomp
ppp> enable vjcomp
  \end{verbatim}
\end{screen}

\section{設定の登録}
アクセスするホストが決まっている場合には、そのホストに対応する
設定をあらかじめ{\em ppp.conf}に登録しておくことができます。
このファイルには、インタラクティブに実行するコマンドをそのまま
列挙することができます。

{\em ppp.conf\/}は、インストール時に{\em /etc\/}にコピーされていますが、
自分のホームディレクトリに{\em .ppp.conf\/}がある場合には、そちらの
方が優先的に参照されます。

\begin{screen}\baselineskip12pt
  \begin{verbatim}
default:
 set dial "ABORT BUSY ABORT NO\\sDIALTONE ABORT NO\\sCARRIER TIMEOUT 5 \"\" AT
OK-AT-OK ATDT\T TIMEOUT 30 CONNECT
 deny lqr chap pap
 disable lqr
host1:
 set login "TIMEOUT 5 gin:\\r-gin: Panon word: Panon
 set phone 01239874321
  \end{verbatim}
\end{screen}

表記の規則は以下のとおりです。

\begin{itemize}
\item ラベル名は行の左端から記入し、その行には他の情報を
  含むことはできません。
\item そのラベルに対応するコマンドはラベル名の行以降に連続して
  登録します。ただし、行の先頭にはひとつ以上の空白を入れてください。
  また、各行には複数のコマンドを入れることはできません。
\item 行が\#で始まっている場合には、その行はコメントであると解釈されます。
\item defaultというラベル名は、PPPの起動時に自動的に実行するコマンドを
  表現するために使用されます。
\end{itemize}

このように、ppp.confにコマンドが登録されている場合には、
{\em load\/}コマンドを使って登録されているコマンドを自動的に
実行することができます。また、{\em dial\/}コマンドに引数を付けた場合には、
引数で指定されたラベルに対応するコマンドを実行してダイアリングを
おこないます。

\begin{screen}\baselineskip12pt
  \begin{verbatim}
ppp> load remote
ppp> dial

     or

ppp> dial remote
ppp>
  \end{verbatim}
\end{screen}

loadコマンドにおいて、引数が省略された場合には、defaultの設定が
実行されます。

\chapter{動的な発呼}
起動時に{\it --auto\/}オプションを指定することにより、PPPプログラムは
自動モードで動作します。このモードでは、
パケットの流れを検出して自動的にダイアルをさせることが
可能です。

\section{自動モードでの起動}
{\it --auto\/}オプションを指定する場合には、相手のアドレスを
求めるために、{\em ppp.conf\/}中に登録されているラベル名が指定されている
必要があります。
また、そのラベルに対応するコマンドの中には set ifaddrコマンドに
よって接続先のアドレスが指定されていなければなりません。

たとえば、{\em ppp.conf\/}中に、

\begin{screen}\baselineskip12pt
  \begin{verbatim}
iijnet:
 set phone 0334569876
 set login "TIMEOUT 5 gin:-\\r-gin: ppp word: ppp"
 set ifaddr 192.244.188.5 192.244.176.50
  \end{verbatim}
\end{screen}

という定義がされていたとしましょう。自動モードでラベル名iijnetを
指定するとPPPが起動されるとともに、上記の一連のコマンドが実行されます。

\begin{screen}\baselineskip12pt
  \begin{verbatim}
% ppp -auto iijnet
User Process PPP. Written by Toshiharu OHNO.
Log level is 09
Using interface: tun0
Automatic mode
%
  \end{verbatim}
\end{screen}

自動モードで起動されると、pppプログラムは自動的にバックグラウンドで
デーモンとして動作しますので、シェルのプロンプトが再び表示されます。
この状態で相手側のアドレス(例では192.244.176.50)宛のパケットが
検出されると、自動的にダイアリングがおこなわれます。

フィルタリング機能を用いれば、発呼のきっかけとなるパケットを制限する
こともできます。詳しくは\ref{filtering}章を参照してください。

\section{telnetの利用}
バックグラウンドで動作しているデーモンとは、telnetを使って通信を
することができます。ポート番号として{\bf 3000 $+$ トンネルデバイス番号}を
指定すれば、対応するデーモンのプロンプトが表示されます。

この機能を利用することにより、各種プロトコル関係の情報をshowコマンドを
用いて知ることができますし、closeコマンドを使って回線の強制的な切断も
おこなえます。

quitコマンドは自動モードで動作しているデーモンとの接続を切断する
意味を持ちます。デーモンの動作を終了させるためには、{\em quite all\/}と
指定してください。

\begin{quote}
  使用するシステムによってはtelnetでうまくPPPプログラムと通信できない
  ことがあります。PPPプログラムが、ちゃんとtelnetプロトコルを実装して
  いないのが原因ですが、BSD系統の{\sc Unix}に付属するtelnetであれば
  問題なく使えるはずです。
\end{quote}

\section{Anonymous PPP}
自動モードで起動する際には、次の例に示すようにこちら側のアドレスの指定を
省略することも可能です。

\begin{screen}
  \begin{verbatim}
 set ifaddr 0 192.244.198.1
  \end{verbatim}
\end{screen}

このような起動をおこなった場合でも、\verb|192.244.198.1|宛のパケットを
検出した時点で自動的にダイアリングがおこなわれて、相手先にパケットを
送出しようとします。
しかしながら、この時点では自分の側のアドレスが指定されていないために、
ソースIPアドレスは\verb|0.0.0.0|としてパケットが送出されてしまい、
相手側のホストは返答を返すことができません。ダイアリングをおこなって、
IPCPのアドレス調停が終了すれば、相手からの指定にしたがってインターフェイス
にアドレスが設定されますので、それ以後は正常に通信がおこなえるように
なります。

このように、相手側がアドレスの指定をおこなう場合には、まず最初に
リンクを確立してアドレスの指定を受け取るために、
ダミーのpingパケットをひとつ投げておき、接続が確立するのを待ってから
実際の通信をおこなうと良いでしょう。

\begin{screen}\baselineskip12pt
  \begin{verbatim}
% /sbin/ping shimanto
PING shimanto (192.244.198.1): 56 data bytes
^C
--- 192.244.198.1 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
%
% telnet shimanto
Trying 192.244.198.1...
Connected to shimanto.iij.ad.jp.
Escape character is '^]'.


BSDI BSD/386 1.1 (shimanto.iij.ad.jp) (ttyp2)

  \end{verbatim}
\end{screen}

\section{再ダイアル}
自動モードで動作している場合には、相手との接続が切断された場合でも
PPPプログラムは動作を続け、次の発呼のトリガとなるパケットが見つかった
時点で再度ダイアリングをおこないます。

ダイアリングの時点でBUSYなどの理由により失敗した場合には、連続して
ダイアリング動作が発生することを避けるために、30秒間の再ダイアル
待ち時間を設けています。この間は、発呼のトリガとなるパケットが
あっても全て無視されます。待ち時間経過後、自動的に再ダイアルする機能は
用意されていませんので注意してください。あくまでも、ダイアリングの
きっかけとなるパケットがあることが必要です。

% Local Variables: 
% mode: japanese-LaTeX
% TeX-master: "guide"
% End: 
